<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 1.数组方法里面的push pop unshift shift的作用分别是什么，他们的返回值又是什么？
      //push:在数组的末尾添加数据。返回值为添加数据后数组的长度
      //pop：删除数组的最后一个数据，返回被删除的数据
      //unshift:在数组的最前面添加一条数据，返回值为添加数据后数组的长度
      //shift:删除数组的第一个数据，返回值为删除的数据

      // 2.移除数组 arr["西瓜","香蕉","菠萝"]中除西瓜外的所有元素，不要使用第二个数组
      var arr = ['西瓜', '香蕉', '菠萝'];
      arr.splice(1, 2);
      console.log(arr);

      // 3.移除数组 arr[1, 2, 3, 4, 2] 中的 2。不要直接修改数组 arr，结果返回新的数组
      var arr = [1, 2, 3, 4, 2];
      var newarr = [];
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] != 2) {
          //   newarr[newarr.length] = arr.slice(i, i + 1).join(''); 简化为以下方法
          newarr.push(arr[i]);
        }
      }
      console.log(newarr);

      // 4.定义一个函数,能在数组 arr[1, 2, 3, 4, 2] 的 "2"后面添加元素 "jack"。不要直接修改数组 arr，结果返回新的数组即调用函数后返回的结果为[1, 2,'jack',3, 4, 2,'jack']
      var arr = [1, 2, 3, 4, 2];
      var newarr = [];
      function setJack(arr, num, str) {
        for (var i = 0; i < arr.length; i++) {
          if (arr[i] == num) {
            // newarr[newarr.length] = newarr.splice(i, 0, 'jack'); //有一个bug,产生的效果就是，打印出来的2会因为它的位置被一个空的数组占用掉了，且在这个空数组的后面再加上了一个'jack'
            newarr.push(arr[i], str);
          } else {
            newarr.push(arr[i]);
          }
        }
        console.log(newarr);
      }
      setJack(arr, 2, 'jack');
      console.log(arr);

      // 5.统计数组 var arr = ["a", "b", "c", "a", "b", "c", "a", "b", "c", "a", "b", "c"]; 中 每个字母出现的次数，以对象的形式返回。
      // {
      //     a:xx,
      //     b:xx,
      // }

      // 方法一：
      // let obj = {};
      // for (var i = 0; i < arr.length; i++) {
      //   if (obj[arr[i]]) {
      //     obj[arr[i]]++;
      //   } else {
      //     obj[arr[i]] = 1;
      //   }
      // }
      // console.log(obj);

      //方法二：
      var arr = ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'];
      var getLetterNumber = {};
      for (var i = 0; i < arr.length; i++) {
        getLetterNumber[arr[i]] = getLetterNumber[arr[i]] + 1 || 1; //短路运算
      }
      console.log(getLetterNumber);

      // 方法三：
      //  var arr = ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'];
      // var person = {};
      // for (var k of arr) {
      //   person[k] = person[k] == undefined ? 1 : person[k] + 1;
      // }
      // console.log(person);
    </script>
  </body>
</html>
